在D特的幫助下,試著穿越時空,但時間碎片湊齊了卻還是出不去,現在該怎辦?
我:...所以我們會永遠困在這嗎?
D特:....(沈思樣),我想剛剛會失敗的原因是我們試著憑空要取得一個時間點,但照理應該是要創照出時間,再去進行穿梭。
我:不管怎樣,趕快來進行吧
Date
不求人公式: setMonth(monthValue, dateValue)
公式解釋:
回傳值:
從1970年到輸入值對應的總毫秒值(millionTime),例如輸入1995,就是回傳1995-1970後換算毫秒值。
let rightNow = new Date();
//2021/9/25 13:55
rightNow.setMonth(11);
//會根據你當下的年份,往前推算(11:代表2021的12月)
Q:當你輸入的值(0-11)超過範圍會怎樣?
let rightNow = new Date();
//2021/9/25 13:55
rightNow.setMonth(12);
//上面有提過,會根據當下時間往前,所以:
//Tue Jan 25 2022 13:56:05 GMT+0800 (台北標準時間)
公式: setFullYear(yearValue, monthValue, dateValue)
公式解釋:
回傳值:
從1970年到輸入值對應的總毫秒值(millionTime),例如輸入1995,就是回傳1995-1970後換算毫秒值
如果沒填monthValue
,dateValue
會自動以getMonth()
,getDate()
,也就是根據local time取出時間。
公式: setDate(dayValue)
公式解釋:
回傳值:
從1970年到輸入值對應的總毫秒值(millionTime),例如輸入1995,就是回傳1995-1970後換算毫秒值。
Date().setDate(31);
Q:當你輸入的值(1-31)超過範圍會怎樣?
Date().setDate(33);
//根據你本地端當下的月份日期長度,例如現在是9月,共30天
//所以setDate(33) = 33 - 當下月份日期長度
Q:當你輸入的值為負值時會怎樣?
Date().setDate(-1);
//根據你本地端當下的月份的前一個月最後一天開始計算
//以上面的結果為例就會得到8/30
公式:setHours(hoursValue, minutesValue, secondsValue, msValue)
公式解釋:
回傳值:
從1970年到輸入值對應的總毫秒值(millionTime),例如輸入1995,就是回傳1995-1970後換算毫秒值。
沒有輸入的部分同樣會自動透過getMinutes()
,getSeconds()
等
Q:當你輸入的值(0-23)超過範圍會怎樣?
rigthNow.setHours(25);
//根據你本地端當下天數往前累計
//9/25 24+1 = 9/26 1am
Q:當你輸入的值為負值時會怎樣?
rigthNow.setHours(-1);
//根據你本地端當下天數的最後小時開始計算
//9/25 24-1 =23pm
我:這樣真的靠譜嗎?跟上次的步驟很像誒...
D特:有道理的擔心,你知道世界上的時間規範不只一種嗎?
為了找出最精確的時間,這次保險起見,要參照哪個規範的時間也來設定一下吧?
公式:toUTCString()
回傳值:回傳依據UTC time zone 規範 的 字串型別內容,
分別是:Www, dd Mmm yyyy hh:mm:ss GMT
console.log(rightNow.toUTCString());
//Sat, 25 Sep 2021 07:14:11 GMT
D特:有注意到嗎?剛剛我們的執行順序是:
操作月 > 操作年 > 操作日期 > 操作小時
流程錯了,是條件跟流程的問題!
(欲知正確流程:可看追求JS小姊姊系列 Day9 -- 如果時間能重來,我不想跟工具人聊天(上))
我:這裡也能業配?!
-- to be continued --
那今天就到這邊摟!今天分享喜歡的歌是:
伍佰 Wu Bai&China Blue【挪威的森林 Norwegian forest】Official Music Video
https://www.youtube.com/watch?v=gPpZJlE0Ca8
每天的休息,是為了後面的追求,明天見。